[Noise protocol framework][noise] support for libp2p.
> **Note**: This crate is still experimental and subject to major breaking changes
> both on the API and the wire protocol.
This crate provides `libp2p_core::InboundUpgrade` and `libp2p_core::OutboundUpgrade`
implementations for various noise handshake patterns (currently `IK`, `IX`, and `XX`)
over a particular choice of Diffie–Hellman key agreement (currently only X25519).
> **Note**: Only the `XX` handshake pattern is currently guaranteed to provide
> interoperability with other libp2p implementations.
All upgrades produce as output a pair, consisting of the remote's static public key
and a `NoiseOutput` which represents the established cryptographic session with the
remote, implementing `futures::io::AsyncRead` and `futures::io::AsyncWrite`.
# Usage
Example:
```
use libp2p_core::{identity, Transport, upgrade};
use libp2p_tcp::TcpConfig;
use libp2p_noise::{Keypair, X25519Spec, NoiseConfig};
# fn main() {
let id_keys = identity::Keypair::generate_ed25519();
let dh_keys = Keypair::::new().into_authentic(&id_keys).unwrap();
let noise = NoiseConfig::xx(dh_keys).into_authenticated();
let builder = TcpConfig::new().upgrade(upgrade::Version::V1).authenticate(noise);
// let transport = builder.multiplex(...);
# }
```
[noise]: http://noiseprotocol.org/